home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Zoom 2
/
Zoom - Release 2 (1996)(Active Software)[!].iso
/
utilities
/
blankers
/
blitzblank_260
/
developer
/
modulesources
/
bb.crumble.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-02-28
|
4KB
|
159 lines
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <dos/dos.h>
#include <exec/memory.h>
#include <intuition/intuitionbase.h>
#include <intuition/screens.h>
#include <intuition/intuition.h>
#include <proto/exec.h>
#include <proto/intuition.h>
#include <proto/graphics.h>
#include <pragmas/blitzblank_pragmas.h>
#include <BlitzBlank.h>
struct Library *BlitzBlankBase;
static const char version[]="$VER: BB.Crumble 2.50 (25.12.94)";
char *text[]={"\33c\33uCrumble\33n\n\nModule for BlitzBlank\n\nCopyright 1994\nby\nThomas Börkel",
"Sp_eed:",
"Da_rk Background:",
"_Brightness",
"_Delay:" };
struct BB_Object object[]={ {&object[1],BB_VGroup,0,0,0,NULL,NULL},
{&object[2],BB_Slider,1,100,100,NULL,NULL},
{&object[3],BB_Check,0,0,0,NULL,NULL},
{&object[4],BB_Slider,0,100,70,NULL,NULL},
{&object[5],BB_Slider,0,20,1,NULL,NULL},
{NULL,BB_VGroup_End,0,0,0,NULL,NULL} };
struct BB_Message message;
struct BB_Screeninfo *screeninfo;
int a,*top,*bot;
struct RastPort *rp;
void setup (void)
{
int i;
a=0;
SetAPen (rp,0);
Move (rp,0,screeninfo->height-1);
Draw (rp,screeninfo->width-1,screeninfo->height-1);
Move (rp,0,screeninfo->height-2);
Draw (rp,screeninfo->width-1,screeninfo->height-2);
for (i=0;i<screeninfo->width;i++)
{
top[i]=screeninfo->height-2;
bot[i]=screeninfo->height;
}
}
void blank (void)
{
int i,x,c,b=0;
rp=&screeninfo->bbscreen->RastPort;
top=calloc (screeninfo->width,sizeof (int));
bot=calloc (screeninfo->width,sizeof (int));
if (top==NULL || bot==NULL)
return;
if (object[2].set)
b=BBL_GetDarkestPen (screeninfo->bbscreen);
ScreenToFront (screeninfo->bbscreen);
if (!CheckSignal (SIGBREAKF_CTRL_C))
{
BBL_ModuleRunning ();
if (BBL_FadeDown (screeninfo->bbscreen,object[3].set,object[4].set))
{
setup ();
do
{
WaitTOF ();
for (i=1;i<=object[1].set;i++)
{
x=drand48 ()*screeninfo->width;
if (top[x]>=0)
{
do
{
c=ReadPixel (rp,x,top[x]);
top[x]--;
} while (c==b && top[x]!=-1);
if (top[x]==-1 && c==b)
a++;
else
top[x]++;
if (c!=b)
{
SetAPen (rp,b);
WritePixel (rp,x,top[x]);
if (drand48 ()*3<1)
{
bot[x]--;
SetAPen (rp,c);
WritePixel (rp,x,bot[x]);
}
}
else
if (a==screeninfo->width)
{
BBL_CopyOriginalScreen (screeninfo->bbscreen);
setup ();
}
}
}
} while (!CheckSignal (SIGBREAKF_CTRL_C));
}
}
return;
}
void main(int argc,char **argv)
{
int i;
if (!(BlitzBlankBase=OpenLibrary ("blitzblank.library",BLITZBLANKLIB_VER)))
exit (0);
message.flags=BBF_CloneScreen;
message.first=&object[0];
if (strcmp (argv[1],"BLANK")==0)
{
StrToLong (argv[3],(long *) &screeninfo);
BBL_SendMessage (&message,argv[2]);
if (screeninfo->bbscreen)
blank ();
BBL_BlankDone ();
}
else
{
message.infotext=BBL_GetString (230,text[0]);
for (i=1;i<=4;i++)
object[i].label=BBL_GetString (230+i,text[i]);
if (strcmp (argv[1],"CONFIG")==0)
{
BBL_SendMessage (&message,argv[2]);
}
else
{
message.first=NULL;
BBL_SendMessage (&message,argv[2]);
}
}
CloseLibrary (BlitzBlankBase);
exit (0);
}